import { type ErrorMapConfig } from 'zod_utilz'

export const zodErrorMap: ErrorMapConfig = {
	invalid_type: ({ expected, received }) =>
		`Ожидался тип - ${expected}, получено - ${received}`,
	required: 'Обязательное поле',
	invalid_literal: ({ expected }) =>
		`Неверное значение литерала, ожидалось ${expected}`,
	unrecognized_keys: ({ keys }) =>
		`Неверные ключи в объекте: ${keys.join(', ')}`,
	invalid_union: 'Результаты пересечения не могут быть объединены',
	invalid_union_discriminator: ({ options }) =>
		`Неверное значение дискриминатора. Ожидалось ${options.join(', ')}`,
	invalid_enum_value: ({ options, received }) =>
		`Неверное значение перечисления. Ожидалось ${options.join(', ')}, получено '${received}'`,
	invalid_arguments: 'Неверный тип аргументов функции',
	invalid_return_type: 'Неверный тип возвращаемого значения функции',
	invalid_date: 'Неверный формат даты',
	custom: 'Неверный ввод',
	invalid_intersection_types: 'Результаты пересечения не могут быть объединены',
	not_multiple_of: ({ multipleOf }) => `Число должно быть кратно ${multipleOf}`,
	not_finite: 'Число должно быть конечным',
	invalid_string: 'Неверный формат строки',
	too_small: ({ minimum, type }) =>
		type === 'number'
			? `Число должно быть не меньше ${minimum}`
			: `Минимальная длина ${minimum} символа(ов)`,
	too_big: ({ maximum, type }) =>
		type === 'number'
			? `Число должно быть не больше ${maximum}`
			: `Максимальная длина ${maximum} символа(ов)`
}

export const phoneRegex = /^\+7 \d{3} \d{3}-\d{2}-\d{2}$/
